//
//  ViewController.m
//  计算位移跟时间
//
//  Created by apple on 15/8/6.
//  Copyright (c) 2015年 apple. All rights reserved.
/*
 要计算时间和位移，要怎么做呢？
 首先，肯定要有一个变量来储存总时间和总路程。
 然后有一个变量来保存总时间。
 
 计算原理是这样的，因为这个数组里面每次结束记录的时候，就会保存一个距离，这个距离是这次的点到上次点的位移。同时记录下这段距离的时间。
 
 
 
 当然还要有一个记录上一次位置的变量，这个变量是什么类型呢？
 
 CLLocation，这个是用来记录位置的。
 
 记录总距离的变量是这个CLLocationDistance，其实，这个的本质就是double类型。
 
 记录时间的类型是NSTimeInterval，这个也是double类型
 
 
 
 
 */

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>

@property (nonatomic,strong)CLLocationManager *manager;

//上一次位置

@property (strong, nonatomic) CLLocation *priorLocation;
// 总时间
@property (assign, nonatomic) CLLocationDistance sumDistance;
// 总位移
@property (assign, nonatomic) NSTimeInterval sumInterval;



@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //在这里还是那两步骤：
    //判断系统定位服务是否打开
    if(![CLLocationManager locationServicesEnabled])
    {
        return;
    }
    
    //能到这步，说明系统定位服务打开了，现在要进行的是：申请用户授权
    //用户授权需要分两种情况，一种是ios7,另外一种是iOS8，ios7是自动的，iOS8要app手动，并且还要在plist文件里面配置好，提醒标语。
    //但是，是不是两个版本都要进行plist文件配置呢？
    
    if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0)
    {
        [self.manager requestWhenInUseAuthorization];
    }
    else
    {
        //自动申请
        
        [self.manager startUpdatingLocation];
    }
    
  
}


#pragma 代理方法
/*
 这几个代理方法：
 
 1，更新位置时，调用
 
 2，出错时，调用
 
 3，改变授权状态时调用
 
一般情况下就这几个代理方法比较常用；
 
 我们计算位移和平均速度的，应该在更新位置的这个方法来实现
 
 */


- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    //判断上一个点是不是存在
    //当前点的位置
    CLLocation *location = locations.lastObject;
    
    if (self.priorLocation)
    {
        
        
        
        
        
        //两次位置的位移
        
        CLLocationDistance distance = [location distanceFromLocation:self.priorLocation];
        
        //两次位置的时间差
        
        NSTimeInterval interval = [location.timestamp timeIntervalSinceDate:self.priorLocation.timestamp];
        _sumDistance += distance;
    }
    
    //然后在这里应该先将这个时候的位置赋值到上面
    
}





































@end
